/*
 * @Description: 反转字符串的客户端
 * 
 * @Author: rendc
 * 
 * @Date: 2025-03-17 10:09:00
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-03-19 14:53:50
 */

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {
  public static void main(String[] args) throws Exception {
    // 创建客户端对象，连接服务器
    // 指定服务器的ip 端口 8989
    // 注意这里的ip和端口都是服务器规定好的
    // 企业级专线 固定ip
    Socket client = new Socket("127.0.0.1", 8989);
    System.out.println("客户端：启动成功");
    // System.out.println("客户端：启动成功" + client);
    // 获取IO流
    // 1. 输入流 要获取服务器给的Print流
    // 1. 输入流 要获取键盘输入
    // 1. 输出流 要输出字符串到服务器
    InputStream is = client.getInputStream();
    OutputStream os = client.getOutputStream();
    PrintStream ps = new PrintStream(os);
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    // 给服务器端发送数据
    // 从键盘录入字符串
    Scanner sc = new Scanner(System.in);
    // 获取输入的字符串
    String string = null;
    while (true) {
      System.out.println("客户端：请输入要反转的字符串，输入\"quit\"退出");
      string = sc.nextLine();
      // System.out.println("客户端：输入的字符串:" + string);
      // 将数组写到输出流 发送给服务器
      ps.println(string);
      // 遇到quit退出系统
      if ("quit".equals(string)) {
        break;
      }
      // 客户端接收的消息
      System.out.println("客户端:接收到服务器的消息" + br.readLine());
    }
    // 关闭资源 - 注意处理异常 - 注意判空
    System.out.println("客户端：即将退出");
    ps.close();
    os.close();
    is.close();
    client.close();
    sc.close();
  }
}